The present invention relates to data communications systems, data senders, data receivers, data communications methods, and computer programs. More particularly, the present invention relates to a data communications system having a more error-resilient packet sending scheme in streaming data transmission and to a data sender, a data receiver, a data communications method, and a computer program.
Nowadays, transmission of data including images and audio data via various communications media such as the Internet has become popular and widely performed. In particular, recent data transmission over the Internet has been offering an increasing number of streaming transmission services in addition to download transmission services. When transmitting multimedia data such as a video file or an audio file, download transmission involves downloading the data file from a distributing server into a storage medium at a receiver and subsequently reading the data from the storage medium. Download transmission does not enable the file to be played until the file has been completely transmitted, which makes it unsuitable for long-time playback or real-time playback.
In contrast, the latter, namely, streaming transmission, involves reading received data while the data is being transmitted from a sender to a receiver. Streaming transmission is widely used by Internet services including Internet telephony, remote videoconferencing, and video-on-demand.
Streaming transmission has been used and developed in systems involving storing, for example, an MPEG (Moving Picture Experts Group) stream, which is generated by MPEG-compression of image data, in IP (Internet Protocol) packets, transmitting the packets over the Internet, and receiving the packets by communications terminals, including personal computers (PCs), personal digital assistants (PDAs), and cellular phones. Streaming transmission is advantageous in performing video-on-demand, streaming distribution of live video images, and real-time communications including videoconferencing and videophones.
One Internet technique suitable for such streaming transmission is the Realtime Transport Protocol (RTP), which is defined in the Internet Engineering Task Force (IETF) Request For Comments (RFC) 1889. RTP-compliant data transmission adds a timestamp serving as time information to a packet. With reference to the timestamp, the time relationship between the sender and the receiver is determined. The receiver reads the data in synchronization without being influenced by delay fluctuations in packet transmission (jitter).
RTP does not ensure real-time data transmission. Since the transport service provided by RTP does not have control over prioritization, setting, and management of packet distribution, RTP packets, as in other packets, may be distributed at a delayed time or may be lost on the network. In case of such errors, the receiver can use only the packets that have arrived within the expected time and read their data. Even if video data or audio data is defective, the data can be read with degraded quality or by compensating for the lack of data.
Packets which are not on time for being read and which are distributed at a delayed time or packets with errors are discarded by the receiver. In other words, in case of packet loss or error, even when the sender performs high-quality data distribution, the receiver may not be able to read the data while maintaining the quality. In particular, when there are errors greater than or equal to 10−5 in wired sections or 10−3 in wireless sections, RTP-compliant data transmission has a problem maintaining the quality of distributed media.
One scheme for solving the problem in RTP-compliant data transmission involves transmission of a packet retransmission request and a retransmission packet in accordance with the TCP (Transmission Control Protocol), which is highly reliable in data transmission. Although TCP has a high error resilience, TCP has a low throughput and large delay. When a packet is retransmitted, the packet may not be on time for being read. This makes it difficult to implement real-time communications.
One possible error correction technique for correcting packet errors is, for example, forward error correction (FEC). FEC transmits FEC data serving as redundant data for performing error correction. In case of an error, the receiver corrects the error on the basis of the FEC data. BCH (Bose-Chaudhuri-Hochquenghem) codes and convolutional codes are used as random error correcting codes. Generally, Read-Solomon (RS) codes are often used as burst error correcting codes. FEC is advantageous over automatic repeat request (ARQ) in that FEC has a reduced delay time since there is no delay caused by retransmission. However, FEC adds redundant data, and FEC thus has a lower throughput in transmission paths having a very low packet loss.
FEC involves complicated error correction and coding processing at the receiver side and is thus dependent on the throughput of the receiver. Determination and transmission of unique and optimal FEC data in accordance with the network status and the receiver is difficult to implement. It is always necessary to consider processing-time overhead.